﻿using System.Windows;

namespace Black.SurfaceToolkit.Controls
{
    /// <summary>
    /// Données pour les événements routés <see cref="E:Black.SurfaceToolkit.Controls.CanvasScatterViewItem.InertiaStarted" />, <see cref="E:Black.SurfaceToolkit.Controls.CanvasScatterViewItem.ManipulationStarted" />, <see cref="E:Black.SurfaceToolkit.Controls.CanvasScatterViewItem.AllOperationStarted" />, <see cref="E:Black.SurfaceToolkit.Controls.CanvasScatterView.InertiaStarted" />, <see cref="E:Black.SurfaceToolkit.Controls.CanvasScatterView.ManipulationStarted" /> et <see cref="E:Black.SurfaceToolkit.Controls.CanvasScatterView.AllOperationStarted" />.
    /// </summary>
    public class OperationStartedRoutedEventArgs : RoutedEventArgs
    {
        #region Accesseurs

        /// <summary>
        /// Obtient l'origine de la manipulation.
        /// </summary>
        public Point ManipulationOrigin
        {
            get;
            private set;
        }

        #endregion

        #region Constructeurs

        /// <summary>
        /// Initialise une nouvelle instance de <see cref="T:Black.SurfaceToolkit.Controls.OperationStartedRoutedEventArgs" />.
        /// </summary>
        /// <param name="p_oOrigin">Origine de la manipulation.</param>
        public OperationStartedRoutedEventArgs(Point p_oOrigin)
            : base()
        {
            this.ManipulationOrigin = p_oOrigin;
        }

        /// <summary>
        /// Initialise une nouvelle instance de <see cref="T:Black.SurfaceToolkit.Controls.OperationStartedRoutedEventArgs" />.
        /// </summary>
        /// <param name="p_oEvent">Evénement routé associé.</param>
        /// <param name="p_oOrigin">Origine de la manipulation.</param>
        public OperationStartedRoutedEventArgs(RoutedEvent p_oEvent, Point p_oOrigin)
            : base(p_oEvent)
        {
            this.ManipulationOrigin = p_oOrigin;
        }

        /// <summary>
        /// Initialise une nouvelle instance de <see cref="T:Black.SurfaceToolkit.Controls.OperationStartedRoutedEventArgs" />.
        /// </summary>
        /// <param name="p_oEvent">Evénement routé associé.</param>
        /// <param name="p_oSource">Source de l'événement.</param>
        /// <param name="p_oOrigin">Origine de la manipulation.</param>
        public OperationStartedRoutedEventArgs(RoutedEvent p_oEvent, object p_oSource, Point p_oOrigin)
            : base(p_oEvent, p_oSource)
        {
            this.ManipulationOrigin = p_oOrigin;
        }

        #endregion
    }
}
